package com.weijian.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.weijian.dal.dto.study.ProgressUpdateRequest;
import com.weijian.dal.dto.study.StudyRecordDTO;
import com.weijian.dal.dto.study.StudyStatisticsDTO;

import java.util.List;

/**
 * 学习记录服务接口
 */
public interface StudyRecordService {

    /**
     * 开始学习课程
     */
    StudyRecordDTO startStudy(Long userId, Long courseId);

    /**
     * 更新学习进度
     */
    StudyRecordDTO updateProgress(Long userId, ProgressUpdateRequest request);

    /**
     * 完成课程学习
     */
    StudyRecordDTO completeCourse(Long userId, Long courseId);

    /**
     * 获取学习记录
     */
    StudyRecordDTO getStudyRecord(Long userId, Long courseId);

    /**
     * 获取用户的学习记录列表
     */
    IPage<StudyRecordDTO> getUserStudyRecords(Page<StudyRecordDTO> page, Long userId);

    /**
     * 获取学习中的课程
     */
    List<StudyRecordDTO> getInProgressCourses(Long userId);

    /**
     * 获取已完成的课程
     */
    List<StudyRecordDTO> getCompletedCourses(Long userId);

    /**
     * 统计用户的学习情况
     */
    StudyStatisticsDTO getUserStudySummary(Long userId);

    /**
     * 获取学习排行榜
     */
    List<StudyRecordDTO> getStudyLeaderboard(String type);
}